PG Session 17, Janvier 2025, Paris
Julien ROUHAUD, Pierre GIRAUD
| 
Julien ROUHAUD (Taipei, Taiwan)  Nile  
@rjuju123 Blog: rjuju.github.io  | 
Pierre GIRAUD (Chambéry, France)  Dalibo  
@pgira  | 
PoWA
=
PostgreSQL Workload Analyzer
Sur une seule instance, entièrement autonome (quelques limitations)
Moderniser le code
Améliorer l’expérience utilisateur 
(Esthétique et
utilisabilité)
Début du développement courant de l’été 2022, temps R&D Dalibo.
| 
Backbone.js Foundation Rickshaw Bower  | 
→ | 
VueJS Vuetify D3.js ViteJS  | 
Fonctionnement initial conservé et amélioré
Structure arborescente en JSON
Composants responsables de leurs données
{
  "dashboard": {
    "title": "All databases",
    "type": "dashboard",
    "widgets": [
      [{
        "title": "All databases",
        "type": "tabcontainer",
        "tabs": [{
          "title": "General Overview",
          "type": "dashboard",
          "widgets": [
            [{
              "server": "1",
              "title": "Query runtime per second (all databases)",
              "metrics": ["all_databases.avg_runtime", "all_databases.load", ...],
              "axistype": "time",
              "stack": false,
              "type": "graph"
            }, {
              ...
            }]
        }, {
          ...
        }]
      }],
      [{
        "server": "1",
        "title": "Details for all databases",
        "metrics": ["by_database.plantime", "by_database.calls", ...],
        "columns": [{
          "name": "datname",
          "label": "Database",
          "url_attr": "url"
        }],
        "type": "grid"
      }],
      ...
    ]
  },
  "datasources": [{
    "name": "all_databases",
    "xaxis": "ts",
    "data_url": "/server/1/metrics/databases_globals/",
    "metrics": [{
      "name": "avg_runtime",
      "label": "Avg runtime",
      "yaxis": "avg_runtime",
      "desc": "Average query duration",
      "type": "duration"
    }, {
      ...
    }]
  }],
  ...
}
Pour une meilleure lisibilité.
Exemple : les tableaux
Autre exemple : les graphiques (et leur légende)
 
 | 
 
 | 
 
 | 
(quasi) Single Page App 
 pour une meilleure expérience
utilisateur
Suggestion d’index globale
Doc : powa.readthedocs.io
Code : github.com/powateam